#include<iostream>
using namespace std;
#include<unistd.h>

// int main()
// {
//     while(1)
//     {
//         printf("我是一个进程啦\n");
        
//         sleep(1);
//     }
//     return 0;
// }


// int main()
// {
//     while(1)
//     {
//         cout << "我是一个进程啦 " << "  " << getpid() << endl;
//         cout << "我的父进程的PID是: " << " " << getppid() << endl;
        
//         sleep(1);
//     }
//     return 0;
// }



// int main()
// {
//     cout << "这是打印的第一行内容" << endl;
    
//     fork();
//     cout << "这是打印的第二行内容" << endl;
//     return 0;
// }


// int main()
// {
//     pid_t id = fork();
//     if (id == 0) 
//     {
//         while(1)
//         {
//             cout << "this is child process, having a pid of " << getpid() << " and having a ppid of " << getppid() << endl;
//             sleep(1);

//         }
//     }
//     else if (id > 0)
//     {
//         while (1)
//         {
//             cout << "this is father process, having a pid of " << getpid() << endl;
//             sleep(1);
//         }
//     }
//     else 
//     {
//         cout << "子进程创建失败" << endl;
//     }
//     return 0;
// }

#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>


// int main()
// {
//     int fd = open("log.txt", O_WRONLY);
//     if (fd == -1)
//     {
//         perror("open");  //perror打印错误码
//         return -1;
//     }
//     return 0;
// }

// int main()
// {
//     int fd = open("log.txt", O_WRONLY | O_CREAT);
//     if (fd == -1) 
//     {
//         perror("open"); //打印错误码
//         return -1;
//     }
//     return 0;
// // }


// int main()
// {
//     int fd = open("log.txt", O_WRONLY | O_CREAT, 0666);
//     if (fd == -1) 
//     {
//         perror("open"); //打印错误码
//         return -1;
//     }
//     return 0;
// }

#include<string.h>


// int main()
// {
//     umask(0);
//     int fd = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//     if (fd == -1) 
//     {
//         perror("open");
//         return -1;
//     }
//     //
//     const char* message = "hello linux\n";
//     write(fd, message, strlen(message));  //第一个文件fd， 第二个信息， 第三个写的大小


//     return 0;
// }

// int main()
// {
//     umask(0);
//     int fd = open("log.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
//     if (fd == -1)
//     {
//         perror("open");
//         return -1;
//     }
//     //
//     const char * message = "hello linux\n";
//     write(fd, message, strlen(message));
    
//     return 0;
// }


#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>

#define filename "log.txt"

// int main()
// {
//     close(0);   //close关闭文件,如果有两个进程， 那么两个进程的0号fd都指向了键盘输入， 这个时候如果关闭一个进程0号fd， 这个fd是进程管理里面的的， 是属于进程的， 不是属于
//     //文件系统的， 也就是说， 一个进程关闭fd， 并不影响另一个进程。另一个进程的fd还是打开着的。 

//     int fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC, 0666);    
//     if (fd == -1) 
//     {
//         perror("open");
//         return -1;
//     }
//     //
//     printf("fd: %d\n", fd);
//     const char* message = "hello linux\n";
//     int cnt = 5;
//     while (cnt--)
//     {
//         write(fd, message, strlen(message));
//     }
//     return 0;
// }


// #include <stdio.h>
// #include <stdlib.h> //rand(), srand()
// #include <time.h>
// #include <unistd.h>
// #define ONEMB	(1024*1024)
// #define ONEGB	(1024*ONEMB) 
 
// //bute转化函数 
// int convByteToHumanResult(unsigned int bytes, char* result)
// {
// 	int i;
// 	char uint[][5] = {"B", "Kb", "MB", "GB", "TB", "PB"};
// 	double dbBytes = bytes;
	
// 	if(NULL == result)
// 	{
// 		return -1;
// 	}
		
// 	for(i=0; dbBytes>=1024.0;i++)
// 	{
// 		dbBytes /= 1024.0;
// 	}
 
// 	sprintf(result, "%.2lf%s", dbBytes, uint[i]);
// 	return i;
// }
 
// //显示进度条函数 
// void showProcessBar(unsigned int total, unsigned int recv, char* info)
// {
// 	int i;
// 	float frecv = recv;
// 	int percent = (int)((frecv/total) * 100);
// 	char res1[64] = {0};
// 	char sum1[64] = {0};
// 	char bar[101] = {0};
	
// 	for(i=0; i<percent; i++)
// 	{
// 		bar[i] = '#';
// 	}
	
// 	convByteToHumanResult(recv, res1);
// 	convByteToHumanResult(total, sum1);
	
// 	if(NULL != info)
// 	{
// 		printf("\r%s total:%s(%u Byte) recv:%s(%u Byte) [%d%%%s]     ", info, sum1, total, res1, recv, percent, bar);
// 		fflush(stdout);
// 	}	
// }
 
// int main(void)
// {
// 	unsigned int i;
// 	unsigned int total1 = (unsigned int)188 * ONEMB;
// 	unsigned int total2 = (unsigned int)1 * ONEGB + 267 * ONEMB;
	
// 	srand(time(0));//设置个随机数种子
	
// 	printf("正在连接！请稍后。");
// 	usleep(2000);
	
// 	printf("\nStart download aaa.log...\n");
// 	for(i=0;;)
// 	{
// 		showProcessBar(total1, i, "download...");
		
// 		if(i >= total1)
// 		{
// 			break;
// 		}
		
// 		i += rand()%1024;
		
// 		if(i>total1)
// 		{
// 			i = total1;
// 		}
// 	}
	
// 	printf("\nDownload aaa.log finish!\n\n");
	
	
// 	printf("\n别慌，还有一个要加载。\n");
// 	usleep(1000);
// 	printf("\n我们可以开始了吗？\n");
// 	printf("Y/N\n");
// 	char a;
// 	while(1)
// 	{
// 		a=getchar();
// 		getchar();
// 		if(a=='n'||a=='N'||a=='Y'||a=='y')break;
// 		else printf("\n不合法的输入！请重新输入吧：Y/N\n");
// 	}
// 	if(a=='n'||a=='N')
// 	{
// 		printf("\n啊？确定吗？Y/N\n") ;
// 		char b;
// 			while(1)
// 		{
// 			b=getchar();
// 			getchar();
// 			if(b=='n'||b=='N'||b=='Y'||b=='y')break;
// 			else printf("\n不合法的输入喔！请重新输入吧：Y/N\n");
// 		}
// 		if(b=='y'||b=='Y'){printf("\n好吧...\n");usleep(3000);printf("等几秒我就会退出了。");usleep(10000);return 0;	} 
// 	} 
// 	printf("\n好的!\n");usleep(1000);
// 	printf("\n按任意键我们继续。\n");
// 	getchar();
// 	usleep(1000);
// 	printf("\nStart download CProgram.zip...\n");
// 	usleep(2000);
// 	for(i=0;;)
// 	{
// 		showProcessBar(total2, i, "download...");
		
// 		if(i >= total2)
// 		{
// 			break;
// 		}
		
// 		i += rand()%8192;
		
// 		if(i>total2)
// 		{
// 			i = total2;
// 		}
// 	}
	
// 	printf("\nDownload CProgram.zip finish!\n");
// 	usleep(1000); 
// 	printf("\n现在开始确认使用者身份。\n");usleep(1000);
// 	printf("\n方便输入您的姓名吗？\n");usleep(1000);
	
// 	char aa[100];
// 	while(1)
// 	{
// 		printf("\n请输入姓名：");
// 		scanf("%s",aa);
// 		getchar();
// 		if(strcmp(aa,"某某某")==0){printf("\n查询中");usleep(400);printf("...\n");usleep(2000);
// 		printf("\n找到啦！\n");break; }
// 		else 
// 		{
// 			printf("\n查询中");
// 			usleep(400);
// 			printf("...\n");
// 			usleep(3000);
// 			printf("\n不好意思。本程序的被邀请人不是您。\n");
// 			usleep(500);
// 			printf("\n是不是不小心输错了？\nY/N\n");
// 			char pp;
// 			while(1)
// 			{
// 				pp=getchar();
// 				getchar();
// 				if(pp=='n'||pp=='N'||pp=='Y'||pp=='y')break;
// 				else printf("\n不合法的输入喔！请重新输入吧：Y/N\n");
// 			}
// 			if(pp=='n'||pp=='N')
// 			{	
// 				printf("\nok，正在退出。\n");
// 				usleep(4000);
// 				return 0;
// 			}
		
// 		} 
// 	}
// 	printf("\n好耶！某某是你！\n");usleep(1000);usleep(1000);
// 	printf("\n我是moumou，嘿嘿。\n");
// 	usleep(2000);
// 	printf("\n额\n");
// 	usleep(2000); 
// 	printf("\n额，啊不\n");
// 	usleep(2000); 
// 	printf("\n我是机器人0505号；\n你可以叫我的英文名：Abi，\n");usleep(2000);
// 	printf("\n鼓掌！\n"); usleep(1000);
// 	while(1)
// 	{
// 		printf("\n请输入：‘你好，Abi'.\n");usleep(1000);
// 		char xx[100];
// 		scanf("%s",xx);
// 		getchar();
// 		if(strcmp(xx,"你好，Abi")!=0){printf("\n输入错了！真笨！\n\n不鼓掌了。\n");usleep(1000);} 
// 		else
// 		break;
// 	}usleep(1000);
// 	printf("\n输入正确！\n");usleep(1000);
// 	printf("\n也问你好哦！\n");usleep(1000);
// 	printf("\n鼓掌！\n"); usleep(1000);
// 	usleep(1000);
// 	printf("根据《地球简史》记载，某小姐您是在 地球年NNNN年 地球月NN月 地球日NN日 降临于这个星球！\n\n");usleep(1000);
// 	printf("\n鼓掌！\n") ;usleep(1000);
// 	printf("\n正在计算中");usleep(1000);
// 	usleep(1000);printf(".");
// 	usleep(1000);printf(".");
// 	usleep(1000);printf(".\n");
// 	usleep(3000);
// 	printf("\n今天是某小姐您留在这个星系观察的第N个地球年。\n按照地球人类生物的习俗，是个值得纪念的日子！\n");usleep(1000);
// 	printf("\n鼓掌！\n") ;
// 	usleep(3000);
// 	printf("\n据我猜测，这一年你应该过的很充实吧。\n");usleep(1000);
// 	printf("\nAbi也过得非常充实,哈哈。");usleep(1000);
// 	printf("\n鼓掌！\n") ;
// 	usleep(3000);
// 	printf("\n好啦，我来这的目的就是祝你生日快乐的！\n");
// 	usleep(1000);
// 	printf("\n如果你以后继续留在这个星系的话，祝你观察顺利哦！");usleep(2000);
// 	printf("\n如果你想去其他星系的话，可以联系我o！\n");usleep(2000);
// 	printf("\n才怪，哈哈。我只是个机器人。我又不在地球\n");usleep(2000);
// 	printf("\n不过我在太阳耳朵里里装了一个接收装置\n");usleep(2000);
// 	printf("\n只要你赞美太阳，装置就会告诉太阳，让太阳在有空的时候晒晒你。\n");usleep(2000);
// 	printf("\n鼓掌！\n") ;usleep(2000);
 
// 	usleep(2000);
// 	printf("赞美太阳！\n");
// 	printf("\n祝福你！\n"); 
// 	printf("乌拉！\n乌~拉~！\n"); 
	
// 	printf("用Python 给你画个飞机，哈哈。\n");	usleep(1000);
// 	printf("来源代码找找吧！\n");	usleep(1000);
// 	printf("Python海龟好累（小声bibi）\n按任意键结束程序。"); 
// 	getchar();	usleep(2000);
	
// 	for(i=0;;)
// 	{
// 		showProcessBar(total2, i, "正在关闭...");
		
// 		if(i >= total2)
// 		{
// 			break;
// 		}
		
// 		i += rand()%8192;
		
// 		if(i>total2)
// 		{
// 			i = total2;
// 		}
// 	}
// 	printf("本次连接已断开！"); 
// 	return 0;
// }

// int main()
// {

// }
